package cn.edu.tju.elm.dto.wallet;

import java.math.BigDecimal;
import java.time.LocalDateTime;

// 钱包DTO，用于前后端或各层之间传递钱包相关的数据。
// 字段说明：
// user           - 钱包所属用户（只包含用户ID）
// balance        - 当前可用余额
// frozenAmount   - 当前被冻结且不可用的金额
// overdraftLimit - 钱包允许的最大透支额度
// rewardAmount   - 钱包中的奖励金额
// userOverdraft  - 用户当前已透支金额
// 提供所有字段的标准 getter 和 setter 方法
public class WalletDto {
    private Long id;
    private Long userId;
    private BigDecimal balance;
    private BigDecimal frozenAmount;
    private BigDecimal availableBalance;
    private BigDecimal overdraftLimit;
    private BigDecimal rewardAmount;
    private BigDecimal userOverdraft;
    private String status;
    private BigDecimal incomingFrozenAmount;
    private String membershipLevel;
    private LocalDateTime membershipExpireTime;
    private Boolean isActiveSvip;

    
    // Getters and Setters
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public BigDecimal getBalance() {
        return balance;
    }
    public void setBalance(BigDecimal balance) {
        this.balance = balance;
    }
    public BigDecimal getFrozenAmount() {
        return frozenAmount;
    }
    public void setFrozenAmount(BigDecimal frozenAmount) {
        this.frozenAmount = frozenAmount;
    }
    public BigDecimal getAvailableBalance() {
        return availableBalance;
    }
    public void setAvailableBalance(BigDecimal availableBalance) {
        this.availableBalance = availableBalance;
    }
    public BigDecimal getOverdraftLimit() {
        return overdraftLimit;
    }
    public void setOverdraftLimit(BigDecimal overdraftLimit) {
        this.overdraftLimit = overdraftLimit;
    }
    public BigDecimal getRewardAmount() {
        return rewardAmount;
    }
    public void setRewardAmount(BigDecimal rewardAmount) {
        this.rewardAmount = rewardAmount;
    }
    public BigDecimal getUserOverdraft() {
        return userOverdraft;
    }
    public void setUserOverdraft(BigDecimal userOverdraft) {
        this.userOverdraft = userOverdraft;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public BigDecimal getIncomingFrozenAmount() {
        return incomingFrozenAmount;
    }
    public void setIncomingFrozenAmount(BigDecimal incomingFrozenAmount) {
        this.incomingFrozenAmount = incomingFrozenAmount;
    }
	public Long getUserId() {
		return userId;
	}
	public void setUserId(Long userId) {
		this.userId = userId;
	}
	public String getMembershipLevel() {
		return membershipLevel;
	}
	public void setMembershipLevel(String membershipLevel) {
		this.membershipLevel = membershipLevel;
	}
	public LocalDateTime getMembershipExpireTime() {
		return membershipExpireTime;
	}
	public void setMembershipExpireTime(LocalDateTime membershipExpireTime) {
		this.membershipExpireTime = membershipExpireTime;
	}
	public Boolean getIsActiveSvip() {
		return isActiveSvip;
	}
	public void setIsActiveSvip(Boolean isActiveSvip) {
		this.isActiveSvip = isActiveSvip;
	}
}
